package com.adhere.common.utils;

/**
 * 类型转换工具类
 *
 * @author WT
 * @date 2022/02/09 09:39:44
 */
public class TypeConvertUtils {

    /**
     * 转换为字符串
     * 如果给定的值为null，或者转换失败，返回默认值
     * 转换失败不会报错
     *
     * @param value        被转换的值
     * @param defaultValue 转换错误时的默认值
     * @return 结果
     */
    public static String objectToString(Object value, String defaultValue) {

        if (null == value) {
            return defaultValue;
        }
        if (value instanceof String) {
            return (String) value;
        }
        return value.toString();

    }

    /**
     * 转换为字符串
     * 如果给定的值为 null，或者转换失败，返回默认值 null
     * 转换失败不会报错
     *
     * @param value 被转换的值
     * @return 结果
     */
    public static String objectToString(Object value) {

        return objectToString(value, null);

    }

    /**
     * 转换为 Integer
     * 如果给定的值为空，或者转换失败，返回默认值
     * 转换失败不会报错
     *
     * @param value        被转换的值
     * @param defaultValue 转换错误时的默认值
     * @return 结果
     */
    public static Integer objectToInteger(Object value, Integer defaultValue) {

        if (value == null) {
            return defaultValue;
        }
        if (value instanceof Integer) {
            return (Integer) value;
        }
        if (value instanceof Number) {
            return ((Number) value).intValue();
        }
        final String valueStr = objectToString(value, null);
        if (ObjectUtils.isEmpty(valueStr)) {
            return defaultValue;
        }
        try {
            return Integer.parseInt(valueStr.trim());
        } catch (Exception e) {
            return defaultValue;
        }

    }

    /**
     * 转换为 Integer
     * 如果给定的值为 null ，或者转换失败，返回默认值 null
     * 转换失败不会报错
     *
     * @param value 被转换的值
     * @return 结果
     */
    public static Integer objectToInteger(Object value) {
        return objectToInteger(value, null);
    }

}
